package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 事务控制
 */
public class JDBCDemo11 {
    public static void main(String[] args) {
        try(Connection conn = DBUtil.getConnection();) {
            //通过Connection来控制事务
             conn.setAutoCommit(false);// 关闭自动提交
            String sql = "INSERT INTO userinfo(username,password,nickname,age)" +
                         "VALUES(?,?,?,?)";
             PreparedStatement ps = conn.prepareStatement(sql);
             ps.setString(1,"王五");
             ps.setString(2,"123456");
             ps.setString(3,"老五");
             ps.setInt(4,36);
             int num =  ps.executeUpdate();
            System.out.println( num > 0?"添加成功":"添加失败");
            /*
            无论我们调用commit还是rollback，都会导致本次事务结束。
             */
             conn.commit(); //事务提交：最终操作完毕，可以提事务
             //conn.rollback();//事务回滚：放弃本次操作，回滚到事务开始前
            System.out.println("事务提交了");



        }catch (SQLException e){
             e.printStackTrace();
        }
    }
}
